package com.efast.dmom.mgmt.dao.les;

import java.util.List;
import org.apache.ibatis.annotations.Param;

import com.efast.dmom.mgmt.bean.les.ImmediateReplenishmentByLibraryBean;
import com.efast.dmom.mgmt.bean.les.ImmediateReplenishmentByRequestBean;
import com.efast.dmom.mgmt.entity.les.TwInvPalMri;
import com.efast.dmom.mgmt.entity.master.TmBasDpath;
import com.efast.dmom.mgmt.utils.Assist;

public interface TwInvPalMriDao {

	/**
	 * 【即时补货---按出库】计算出一个job周期内实际消耗了多少零件数，并且按照补货路径归类 即时补货 : Immediate replenishment
	 * 出库 : library
	 * 
	 * @return
	 */
	List<ImmediateReplenishmentByLibraryBean> queryTimelyReplenishmentByLibrary(@Param(value = "dpathId") int dpathId);

	/**
	 * 【即时补货---按请求】计算出一个job周期内实际消耗了多少零件数，并且按照补货路径归类 即时补货 : Immediate replenishment
	 * 按请求 : request
	 * 
	 * @param integer
	 * @return
	 */
	List<ImmediateReplenishmentByRequestBean> queryTimelyReplenishmentByRequest(@Param(value = "dpathId") int dpathId);

	/**
	 * 【窗口补货-按累计消耗---按出库】：按照wms实际出库记录算消耗=======计算出一条补货路径的零件消耗量
	 */
	List<ImmediateReplenishmentByLibraryBean> queryOnePathPartsConsume(@Param(value = "dpathId") int dpathId);

	/**
	 * 【窗口补货-按累计消耗---按请求】：按照sps传给wms的kitting消耗算=======计算出一条补货路径的零件消耗量
	 */
	List<ImmediateReplenishmentByRequestBean> queryOnePathPartsConsumeByRequest(
			@Param(value = "tmBasDpathId") int tmBasDpathId);

	/**
	 * 查询出所有的补货路径
	 */
	List<TmBasDpath> queryAllPath();

	/**
	 * 获得TwInvPalMri数据的总行数,可以通过辅助工具Assist进行条件查询,如果没有条件则传入null
	 * 
	 * @param assist
	 * @return
	 */
	long getTwInvPalMriRowCount(Assist assist);

	/**
	 * 获得TwInvPalMri数据集合,可以通过辅助工具Assist进行条件查询,如果没有条件则传入null
	 * 
	 * @param assist
	 * @return
	 */
	List<TwInvPalMri> selectTwInvPalMri(Assist assist);

	/**
	 * 获得一个TwInvPalMri对象,以参数TwInvPalMri对象中不为空的属性作为条件进行查询
	 * 
	 * @param obj
	 * @return
	 */
	TwInvPalMri selectTwInvPalMriByObj(TwInvPalMri obj);

	/**
	 * 通过TwInvPalMri的id获得TwInvPalMri对象
	 * 
	 * @param id
	 * @return
	 */
	TwInvPalMri selectTwInvPalMriById(Integer id);

	/**
	 * 插入TwInvPalMri到数据库,包括null值
	 * 
	 * @param value
	 * @return
	 */
	int insertTwInvPalMri(TwInvPalMri value);

	/**
	 * 插入TwInvPalMri中属性值不为null的数据到数据库
	 * 
	 * @param value
	 * @return
	 */
	int insertNonEmptyTwInvPalMri(TwInvPalMri value);

	/**
	 * 批量插入TwInvPalMri到数据库,包括null值
	 * 
	 * @param value
	 * @return
	 */
	int insertTwInvPalMriByBatch(List<TwInvPalMri> value);

	/**
	 * 通过TwInvPalMri的id删除TwInvPalMri
	 * 
	 * @param id
	 * @return
	 */
	int deleteTwInvPalMriById(Integer id);

	/**
	 * 通过辅助工具Assist的条件删除TwInvPalMri
	 * 
	 * @param assist
	 * @return
	 */
	int deleteTwInvPalMri(Assist assist);

	/**
	 * 通过TwInvPalMri的id更新TwInvPalMri中的数据,包括null值
	 * 
	 * @param enti
	 * @return
	 */
	int updateTwInvPalMriById(TwInvPalMri enti);

	/**
	 * 通过辅助工具Assist的条件更新TwInvPalMri中的数据,包括null值
	 * 
	 * @param value
	 * @param assist
	 * @return
	 */
	int updateTwInvPalMri(@Param("enti") TwInvPalMri value, @Param("assist") Assist assist);

	/**
	 * 通过TwInvPalMri的id更新TwInvPalMri中属性不为null的数据
	 * 
	 * @param enti
	 * @return
	 */
	int updateNonEmptyTwInvPalMriById(TwInvPalMri enti);

	/**
	 * 通过辅助工具Assist的条件更新TwInvPalMri中属性不为null的数据
	 * 
	 * @param value
	 * @param assist
	 * @return
	 */
	int updateNonEmptyTwInvPalMri(@Param("enti") TwInvPalMri value, @Param("assist") Assist assist);

}